package negModel;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.apache.xerces.parsers.DOMParser;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class ListaJugadores extends ArrayList{

		
	public ListaJugadores(){
		super();
	}
	
	public ListaJugadores(Element xmlElement){
		
		PersonajeJugador pj;
		NodeList nodoslista=xmlElement.getElementsByTagName("personaje");
		for(int nlv=0;nlv<nodoslista.getLength();nlv++){
			pj = new PersonajeJugador((Element)nodoslista.item(nlv));
			this.add(pj);
		}
		
	}
	
	public Element toXml(Document doc) {
		Element xmlElement = doc.createElement("ListaJugadores");
		
		Iterator it=this.iterator();
		PersonajeJugador pj;
		while (it.hasNext()){
			
			pj =(PersonajeJugador)it.next();
		
			xmlElement.appendChild(pj.toXml(doc));
		}
		return xmlElement;
	}
	
	
	public static void guardar(String nombreArchivo,ListaJugadores listaJ ) throws IOException, ParserConfigurationException{
	    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
	    DocumentBuilder loader = factory.newDocumentBuilder();
        Document doc = loader.newDocument();

        
        doc.appendChild(listaJ.toXml(doc));
        
        XMLSerializer serializer = new XMLSerializer();
        
        OutputFormat outFormat = new OutputFormat();

       
        outFormat.setVersion("1.0");
        outFormat.setIndenting(true);
        outFormat.setIndent(4);
        
        serializer.setOutputFormat(outFormat);
        serializer.setOutputCharStream(
          new java.io.FileWriter(nombreArchivo));
        serializer.serialize(doc);
	}
	
	public static ListaJugadores cargar (String nombreArchivo) throws IOException, ClassNotFoundException{
		DOMParser parser = new DOMParser();

		try {
		    parser.parse(nombreArchivo);

		} catch (SAXException se) {
		    se.printStackTrace();
		} catch (IOException ioe) {
		    ioe.printStackTrace();
		}

		Document docXml = parser.getDocument();
		
		return new ListaJugadores(docXml.getDocumentElement());

	}
		
	
}
